#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 25;
int dp[maxn];

void solve(){
	int n;
	dp[2] = 1;
//	 n 放到 x 的位置有 n-1 种
//	 那么 x 可以放到 n 位置, 这样剩下的就是 dp[n-2]
//	 如果 x 不放到 n 位置, 其实就等价于 n 的位置就是 x 的位置, x 不能放到自己的这个位置 n
//	 所以剩下的就是 dp[n-1]
	while(cin >> n){
		for (int i=3;i<=n;i++) {
			dp[i] = (i-1)*(dp[i-2] + dp[i-1]);
		}
		cout << dp[n] << '\n';
	}
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t;
	t=1;
	while(t--){
		solve();
	}
	return 0;
}
